const map = new Map();
function memo(fn) {
  return (input) => {
    if (map.has(input)) return map.get(input);
    const res = fn(input);
    map.set(input, res);
    return map;
  };
}

const cache = Object.create(null);
function fib(a) {
  if (a === 1 || a === 2) return 1;
  if (map[a]) return map[a];
  map[a] = fib(a - 2) + fib(a - 1);
  return map[a];
}

console.log(fib(5))
